RESTful API তৈরি করা

Web Development - এএসপি ডট (ASP.Net) - Web API তৈরি করা |

ASP.Net Core এ RESTful API তৈরি করা একটি সাধারণ প্রক্রিয়া, যা HTTP প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান নিশ্চিত করে। REST (Representational State Transfer) হল একটি আর্কিটেকচারাল স্টাইল, যা HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে রিসোর্সের উপর অপারেশন সম্পাদন করতে দেয়।


১. RESTful API কী?

RESTful API একটি ওয়েব সার্ভিস যা HTTP মেথডের মাধ্যমে বিভিন্ন রিসোর্সের উপর কাজ করে। RESTful API সাধারণত:

  • GET: ডেটা নিয়ে আসার জন্য
  • POST: নতুন ডেটা তৈরি করার জন্য
  • PUT: বিদ্যমান ডেটা আপডেট করার জন্য
  • DELETE: ডেটা মুছে ফেলার জন্য

একটি RESTful API ডিজাইন করার জন্য নিম্নলিখিত সুবিধাসমূহ নিশ্চিত করতে হয়:

  • Stateless: প্রতিটি রিকোয়েস্ট সম্পূর্ণভাবে স্বাধীন এবং আগের রিকোয়েস্টের উপর নির্ভর করে না।
  • Resource-based: প্রতিটি API রিকোয়েস্ট একটি রিসোর্সকে টার্গেট করে (যেমন ইউজার, প্রোডাক্ট ইত্যাদি)।
  • JSON or XML: API সাধারণত JSON বা XML ফরম্যাটে ডেটা ফেরত দেয়।

২. ASP.Net Core এ RESTful API তৈরি করা

ASP.Net Core ব্যবহার করে একটি সিম্পল RESTful API তৈরি করা খুবই সহজ। নিচে একটি উদাহরণ দেখানো হলো যেখানে একটি Product রিসোর্স তৈরি করা হবে এবং CRUD অপারেশন সম্পাদন করা হবে।

২.১. ASP.Net Core API প্রজেক্ট তৈরি করা

  1. Visual Studio বা .NET CLI ব্যবহার করে একটি নতুন ASP.Net Core API প্রজেক্ট তৈরি করুন।
    • .NET CLI:

      dotnet new webapi -n ProductApi
      
  2. প্রজেক্টে প্রয়োজনীয় প্যাকেজ ইনস্টল করুন:
    • Microsoft.EntityFrameworkCore প্যাকেজ ইনস্টল করতে পারেন ডাটাবেসের সাথে ইন্টিগ্রেশন করার জন্য।
    • Swashbuckle.AspNetCore প্যাকেজ ইনস্টল করলে আপনি Swagger UI ব্যবহার করে API ডকুমেন্টেশন তৈরি করতে পারবেন।

২.২. মডেল তৈরি করা

প্রথমে একটি Product মডেল তৈরি করতে হবে, যা API এ ব্যবহৃত হবে।

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

২.৩. ডাটাবেস কনটেক্সট তৈরি করা

DbContext ক্লাস তৈরি করে ডাটাবেসে রিসোর্স (এখানে Product) ব্যবস্থাপনা করা হয়।

using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }

    public DbSet<Product> Products { get; set; }
}

২.৪. API কন্ট্রোলার তৈরি করা

এখন একটি API কন্ট্রোলার তৈরি করতে হবে, যা HTTP রিকোয়েস্টের জন্য ব্যবহৃত হবে। কন্ট্রোলারটি ControllerBase ক্লাসের মাধ্যমে API রুটিন পরিচালনা করবে।

using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
    private readonly AppDbContext _context;

    public ProductsController(AppDbContext context)
    {
        _context = context;
    }

    // GET: api/products
    [HttpGet]
    public async Task<ActionResult<IEnumerable<Product>>> GetProducts()
    {
        return await _context.Products.ToListAsync();
    }

    // GET: api/products/5
    [HttpGet("{id}")]
    public async Task<ActionResult<Product>> GetProduct(int id)
    {
        var product = await _context.Products.FindAsync(id);

        if (product == null)
        {
            return NotFound();
        }

        return product;
    }

    // POST: api/products
    [HttpPost]
    public async Task<ActionResult<Product>> PostProduct(Product product)
    {
        _context.Products.Add(product);
        await _context.SaveChangesAsync();

        return CreatedAtAction("GetProduct", new { id = product.Id }, product);
    }

    // PUT: api/products/5
    [HttpPut("{id}")]
    public async Task<IActionResult> PutProduct(int id, Product product)
    {
        if (id != product.Id)
        {
            return BadRequest();
        }

        _context.Entry(product).State = EntityState.Modified;

        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!_context.Products.Any(e => e.Id == id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return NoContent();
    }

    // DELETE: api/products/5
    [HttpDelete("{id}")]
    public async Task<ActionResult<Product>> DeleteProduct(int id)
    {
        var product = await _context.Products.FindAsync(id);
        if (product == null)
        {
            return NotFound();
        }

        _context.Products.Remove(product);
        await _context.SaveChangesAsync();

        return product;
    }
}

২.৫. Startup.cs কনফিগারেশন

Startup.cs ফাইলের মধ্যে API কনফিগারেশন এবং ডাটাবেস কনটেক্সট পরিষেবা যোগ করুন।

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<AppDbContext>(options =>
            options.UseInMemoryDatabase("ProductDb")); // In-memory database
        services.AddControllers();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

২.৬. API রিকোয়েস্ট এবং রেসপন্স

এই কন্ট্রোলার এখন GET, POST, PUT, এবং DELETE HTTP মেথডগুলোকে সাপোর্ট করবে:

  • GET /api/products: সমস্ত প্রোডাক্টের তালিকা ফেরত দেয়।
  • GET /api/products/{id}: একটি নির্দিষ্ট প্রোডাক্ট ফিরিয়ে দেয়।
  • POST /api/products: একটি নতুন প্রোডাক্ট তৈরি করে।
  • PUT /api/products/{id}: একটি প্রোডাক্ট আপডেট করে।
  • DELETE /api/products/{id}: একটি প্রোডাক্ট মুছে ফেলে।

৩. Swagger UI (ডকুমেন্টেশন)

API এর জন্য ডকুমেন্টেশন এবং পরীক্ষা করার সুবিধা দিতে Swagger ব্যবহার করা হয়। Swashbuckle.AspNetCore প্যাকেজটি ইনস্টল করলে Swagger UI স্বয়ংক্রিয়ভাবে তৈরি হয়ে যাবে।

  1. NuGet Package Manager থেকে Swashbuckle.AspNetCore প্যাকেজ ইনস্টল করুন।
  2. Startup.cs এ Swagger কনফিগার করুন:
public void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "ProductApi v1"));
    }
}

এখন আপনি http://localhost:5000/swagger URL দিয়ে Swagger UI তে API পরীক্ষা করতে পারবেন।


সারাংশ

ASP.Net Core দিয়ে একটি RESTful API তৈরি করতে, আপনাকে প্রথমে একটি মডেল এবং ডাটাবেস কনটেক্সট তৈরি করতে হয়। এরপর, একটি কন্ট্রোলার তৈরি করে HTTP রিকোয়েস্টগুলোর জন্য রুট এবং মেথডগুলো কনফিগার করতে হয়। Swagger UI ব্যবহার করে API ডকুমেন্টেশন এবং পরীক্ষা করা সহজ।

Content added By
Promotion